﻿using System;
using System.Runtime.InteropServices;
using System.Drawing;
 
 
namespace Common.SystemUtil {
  /// <summary>
  /// Window API enumerations
  /// </summary>

  #region Peek Message Flags
  public enum PeekMessageFlags {
    PM_NOREMOVE = 0,
    PM_REMOVE = 1,
    PM_NOYIELD = 2
  }
  #endregion

  #region Windows Messages
  public enum WinMsg {
    WM_NULL = 0x0000,
    WM_CREATE = 0x0001,
    WM_DESTROY = 0x0002,
    WM_MOVE = 0x0003,
    WM_SIZE = 0x0005,
    WM_ACTIVATE = 0x0006,
    WM_SETFOCUS = 0x0007,
    WM_KILLFOCUS = 0x0008,
    WM_ENABLE = 0x000A,
    WM_SETREDRAW = 0x000B,
    WM_SETTEXT = 0x000C,
    WM_GETTEXT = 0x000D,
    WM_GETTEXTLENGTH = 0x000E,
    WM_PAINT = 0x000F,
    WM_CLOSE = 0x0010,
    WM_QUERYENDSESSION = 0x0011,
    WM_QUIT = 0x0012,
    WM_QUERYOPEN = 0x0013,
    WM_ERASEBKGND = 0x0014,
    WM_SYSCOLORCHANGE = 0x0015,
    WM_ENDSESSION = 0x0016,
    WM_SHOWWINDOW = 0x0018,
    WM_CTLCOLOR = 0x0019,
    WM_WININICHANGE = 0x001A,
    WM_SETTINGCHANGE = 0x001A,
    WM_DEVMODECHANGE = 0x001B,
    WM_ACTIVATEAPP = 0x001C,
    WM_FONTCHANGE = 0x001D,
    WM_TIMECHANGE = 0x001E,
    WM_CANCELMODE = 0x001F,
    WM_SETCURSOR = 0x0020,
    WM_MOUSEACTIVATE = 0x0021,
    WM_CHILDACTIVATE = 0x0022,
    WM_QUEUESYNC = 0x0023,
    WM_GETMINMAXINFO = 0x0024,
    WM_PAINTICON = 0x0026,
    WM_ICONERASEBKGND = 0x0027,
    WM_NEXTDLGCTL = 0x0028,
    WM_SPOOLERSTATUS = 0x002A,
    WM_DRAWITEM = 0x002B,
    WM_MEASUREITEM = 0x002C,
    WM_DELETEITEM = 0x002D,
    WM_VKEYTOITEM = 0x002E,
    WM_CHARTOITEM = 0x002F,
    WM_SETFONT = 0x0030,
    WM_GETFONT = 0x0031,
    WM_SETHOTKEY = 0x0032,
    WM_GETHOTKEY = 0x0033,
    WM_QUERYDRAGICON = 0x0037,
    WM_COMPAREITEM = 0x0039,
    WM_GETOBJECT = 0x003D,
    WM_COMPACTING = 0x0041,
    WM_COMMNOTIFY = 0x0044,
    WM_WINDOWPOSCHANGING = 0x0046,
    WM_WINDOWPOSCHANGED = 0x0047,
    WM_POWER = 0x0048,
    WM_COPYDATA = 0x004A,
    WM_CANCELJOURNAL = 0x004B,
    WM_NOTIFY = 0x004E,
    WM_INPUTLANGCHANGEREQUEST = 0x0050,
    WM_INPUTLANGCHANGE = 0x0051,
    WM_TCARD = 0x0052,
    WM_HELP = 0x0053,
    WM_USERCHANGED = 0x0054,
    WM_NOTIFYFORMAT = 0x0055,
    WM_CONTEXTMENU = 0x007B,
    WM_STYLECHANGING = 0x007C,
    WM_STYLECHANGED = 0x007D,
    WM_DISPLAYCHANGE = 0x007E,
    WM_GETICON = 0x007F,
    WM_SETICON = 0x0080,
    WM_NCCREATE = 0x0081,
    WM_NCDESTROY = 0x0082,
    WM_NCCALCSIZE = 0x0083,
    WM_NCHITTEST = 0x0084,
    WM_NCPAINT = 0x0085,
    WM_NCACTIVATE = 0x0086,
    WM_GETDLGCODE = 0x0087,
    WM_SYNCPAINT = 0x0088,
    WM_NCMOUSEMOVE = 0x00A0,
    WM_NCLBUTTONDOWN = 0x00A1,
    WM_NCLBUTTONUP = 0x00A2,
    WM_NCLBUTTONDBLCLK = 0x00A3,
    WM_NCRBUTTONDOWN = 0x00A4,
    WM_NCRBUTTONUP = 0x00A5,
    WM_NCRBUTTONDBLCLK = 0x00A6,
    WM_NCMBUTTONDOWN = 0x00A7,
    WM_NCMBUTTONUP = 0x00A8,
    WM_NCMBUTTONDBLCLK = 0x00A9,
    WM_KEYDOWN = 0x0100,
    WM_KEYUP = 0x0101,
    WM_CHAR = 0x0102,
    WM_DEADCHAR = 0x0103,
    WM_SYSKEYDOWN = 0x0104,
    WM_SYSKEYUP = 0x0105,
    WM_SYSCHAR = 0x0106,
    WM_SYSDEADCHAR = 0x0107,
    WM_KEYLAST = 0x0108,
    WM_IME_STARTCOMPOSITION = 0x010D,
    WM_IME_ENDCOMPOSITION = 0x010E,
    WM_IME_COMPOSITION = 0x010F,
    WM_IME_KEYLAST = 0x010F,
    WM_INITDIALOG = 0x0110,
    WM_COMMAND = 0x0111,
    WM_SYSCOMMAND = 0x0112,
    WM_TIMER = 0x0113,
    WM_HSCROLL = 0x0114,
    WM_VSCROLL = 0x0115,
    WM_INITMENU = 0x0116,
    WM_INITMENUPOPUP = 0x0117,
    WM_MENUSELECT = 0x011F,
    WM_MENUCHAR = 0x0120,
    WM_ENTERIDLE = 0x0121,
    WM_MENURBUTTONUP = 0x0122,
    WM_MENUDRAG = 0x0123,
    WM_MENUGETOBJECT = 0x0124,
    WM_UNINITMENUPOPUP = 0x0125,
    WM_MENUCOMMAND = 0x0126,
    WM_CTLCOLORWinMsgBOX = 0x0132,
    WM_CTLCOLOREDIT = 0x0133,
    WM_CTLCOLORLISTBOX = 0x0134,
    WM_CTLCOLORBTN = 0x0135,
    WM_CTLCOLORDLG = 0x0136,
    WM_CTLCOLORSCROLLBAR = 0x0137,
    WM_CTLCOLORSTATIC = 0x0138,
    WM_MOUSEMOVE = 0x0200,
    WM_LBUTTONDOWN = 0x0201,
    WM_LBUTTONUP = 0x0202,
    WM_LBUTTONDBLCLK = 0x0203,
    WM_RBUTTONDOWN = 0x0204,
    WM_RBUTTONUP = 0x0205,
    WM_RBUTTONDBLCLK = 0x0206,
    WM_MBUTTONDOWN = 0x0207,
    WM_MBUTTONUP = 0x0208,
    WM_MBUTTONDBLCLK = 0x0209,
    WM_MOUSEWHEEL = 0x020A,
    WM_PARENTNOTIFY = 0x0210,
    WM_ENTERMENULOOP = 0x0211,
    WM_EXITMENULOOP = 0x0212,
    WM_NEXTMENU = 0x0213,
    WM_SIZING = 0x0214,
    WM_CAPTURECHANGED = 0x0215,
    WM_MOVING = 0x0216,
    WM_DEVICECHANGE = 0x0219,
    WM_MDICREATE = 0x0220,
    WM_MDIDESTROY = 0x0221,
    WM_MDIACTIVATE = 0x0222,
    WM_MDIRESTORE = 0x0223,
    WM_MDINEXT = 0x0224,
    WM_MDIMAXIMIZE = 0x0225,
    WM_MDITILE = 0x0226,
    WM_MDICASCADE = 0x0227,
    WM_MDIICONARRANGE = 0x0228,
    WM_MDIGETACTIVE = 0x0229,
    WM_MDISETMENU = 0x0230,
    WM_ENTERSIZEMOVE = 0x0231,
    WM_EXITSIZEMOVE = 0x0232,
    WM_DROPFILES = 0x0233,
    WM_MDIREFRESHMENU = 0x0234,
    WM_IME_SETCONTEXT = 0x0281,
    WM_IME_NOTIFY = 0x0282,
    WM_IME_CONTROL = 0x0283,
    WM_IME_COMPOSITIONFULL = 0x0284,
    WM_IME_SELECT = 0x0285,
    WM_IME_CHAR = 0x0286,
    WM_IME_REQUEST = 0x0288,
    WM_IME_KEYDOWN = 0x0290,
    WM_IME_KEYUP = 0x0291,
    WM_MOUSEHOVER = 0x02A1,
    WM_MOUSELEAVE = 0x02A3,
    WM_CUT = 0x0300,
    WM_COPY = 0x0301,
    WM_PASTE = 0x0302,
    WM_CLEAR = 0x0303,
    WM_UNDO = 0x0304,
    WM_RENDERFORMAT = 0x0305,
    WM_RENDERALLFORMATS = 0x0306,
    WM_DESTROYCLIPBOARD = 0x0307,
    WM_DRAWCLIPBOARD = 0x0308,
    WM_PAINTCLIPBOARD = 0x0309,
    WM_VSCROLLCLIPBOARD = 0x030A,
    WM_SIZECLIPBOARD = 0x030B,
    WM_ASKCBFORMATNAME = 0x030C,
    WM_CHANGECBCHAIN = 0x030D,
    WM_HSCROLLCLIPBOARD = 0x030E,
    WM_QUERYNEWPALETTE = 0x030F,
    WM_PALETTEISCHANGING = 0x0310,
    WM_PALETTECHANGED = 0x0311,
    WM_HOTKEY = 0x0312,
    WM_PRINT = 0x0317,
    WM_PRINTCLIENT = 0x0318,
    WM_HANDHELDFIRST = 0x0358,
    WM_HANDHELDLAST = 0x035F,
    WM_AFXFIRST = 0x0360,
    WM_AFXLAST = 0x037F,
    WM_PENWINFIRST = 0x0380,
    WM_PENWINLAST = 0x038F,
    WM_APP = 0x8000,
    WM_USER = 0x0400,
    WM_REFLECT = WM_USER + 0x1c00
  }
  #endregion

  #region Window Styles
  public enum WindowStyles : uint {
    WS_OVERLAPPED = 0x00000000,
    WS_POPUP = 0x80000000,
    WS_CHILD = 0x40000000,
    WS_MINIMIZE = 0x20000000,
    WS_VISIBLE = 0x10000000,
    WS_DISABLED = 0x08000000,
    WS_CLIPSIBLINGS = 0x04000000,
    WS_CLIPCHILDREN = 0x02000000,
    WS_MAXIMIZE = 0x01000000,
    WS_CAPTION = 0x00C00000,
    WS_BORDER = 0x00800000,
    WS_DLGFRAME = 0x00400000,
    WS_VSCROLL = 0x00200000,
    WS_HSCROLL = 0x00100000,
    WS_SYSMENU = 0x00080000,
    WS_THICKFRAME = 0x00040000,
    WS_GROUP = 0x00020000,
    WS_TABSTOP = 0x00010000,
    WS_MINIMIZEBOX = 0x00020000,
    WS_MAXIMIZEBOX = 0x00010000,
    WS_TILED = 0x00000000,
    WS_ICONIC = 0x20000000,
    WS_SIZEBOX = 0x00040000,
    WS_POPUPWINDOW = 0x80880000,
    WS_OVERLAPPEDWINDOW = 0x00CF0000,
    WS_TILEDWINDOW = 0x00CF0000,
    WS_CHILDWINDOW = 0x40000000
  }
  #endregion

  #region Window Extended Styles
  public enum WindowExStyles {
    WS_EX_DLGMODALFRAME = 0x00000001,
    WS_EX_NOPARENTNOTIFY = 0x00000004,
    WS_EX_TOPMOST = 0x00000008,
    WS_EX_ACCEPTFILES = 0x00000010,
    WS_EX_TRANSPARENT = 0x00000020,
    WS_EX_MDICHILD = 0x00000040,
    WS_EX_TOOLWINDOW = 0x00000080,
    WS_EX_WINDOWEDGE = 0x00000100,
    WS_EX_CLIENTEDGE = 0x00000200,
    WS_EX_CONTEXTHELP = 0x00000400,
    WS_EX_RIGHT = 0x00001000,
    WS_EX_LEFT = 0x00000000,
    WS_EX_RTLREADING = 0x00002000,
    WS_EX_LTRREADING = 0x00000000,
    WS_EX_LEFTSCROLLBAR = 0x00004000,
    WS_EX_RIGHTSCROLLBAR = 0x00000000,
    WS_EX_CONTROLPARENT = 0x00010000,
    WS_EX_STATICEDGE = 0x00020000,
    WS_EX_APPWINDOW = 0x00040000,
    WS_EX_OVERLAPPEDWINDOW = 0x00000300,
    WS_EX_PALETTEWINDOW = 0x00000188,
    WS_EX_LAYERED = 0x00080000
  }
  #endregion

  #region ShowWindow Styles
  public enum ShowWindowStyles : short {
    SW_HIDE = 0,
    SW_SHOWNORMAL = 1,
    SW_NORMAL = 1,
    SW_SHOWMINIMIZED = 2,
    SW_SHOWMAXIMIZED = 3,
    SW_MAXIMIZE = 3,
    SW_SHOWNOACTIVATE = 4,
    SW_SHOW = 5,
    SW_MINIMIZE = 6,
    SW_SHOWMINNOACTIVE = 7,
    SW_SHOWNA = 8,
    SW_RESTORE = 9,
    SW_SHOWDEFAULT = 10,
    SW_FORCEMINIMIZE = 11,
    SW_MAX = 11
  }

  #endregion

  #region SetWindowPos Z Order
  public enum SetWindowPosZOrder {
    HWND_TOP = 0,
    HWND_BOTTOM = 1,
    HWND_TOPMOST = -1,
    HWND_NOTOPMOST = -2
  }
  #endregion

  #region SetWindowPosFlags
  public enum SetWindowPosFlags : uint {
    SWP_NOSIZE = 0x0001,
    SWP_NOMOVE = 0x0002,
    SWP_NOZORDER = 0x0004,
    SWP_NOREDRAW = 0x0008,
    SWP_NOACTIVATE = 0x0010,
    SWP_FRAMECHANGED = 0x0020,
    SWP_SHOWWINDOW = 0x0040,
    SWP_HIDEWINDOW = 0x0080,
    SWP_NOCOPYBITS = 0x0100,
    SWP_NOOWNERZORDER = 0x0200,
    SWP_NOSENDCHANGING = 0x0400,
    SWP_DRAWFRAME = 0x0020,
    SWP_NOREPOSITION = 0x0200,
    SWP_DEFERERASE = 0x2000,
    SWP_ASYNCWINDOWPOS = 0x4000
  }
  #endregion

  #region Virtual Keys
  public enum VirtualKeys {
    VK_LBUTTON = 0x01,
    VK_CANCEL = 0x03,
    VK_BACK = 0x08,
    VK_TAB = 0x09,
    VK_CLEAR = 0x0C,
    VK_RETURN = 0x0D,
    VK_SHIFT = 0x10,
    VK_CONTROL = 0x11,
    VK_MENU = 0x12,
    VK_CAPITAL = 0x14,
    VK_ESCAPE = 0x1B,
    VK_SPACE = 0x20,
    VK_PRIOR = 0x21,
    VK_NEXT = 0x22,
    VK_END = 0x23,
    VK_HOME = 0x24,
    VK_LEFT = 0x25,
    VK_UP = 0x26,
    VK_RIGHT = 0x27,
    VK_DOWN = 0x28,
    VK_SELECT = 0x29,
    VK_EXECUTE = 0x2B,
    VK_SNAPSHOT = 0x2C,
    VK_HELP = 0x2F,
    VK_0 = 0x30,
    VK_1 = 0x31,
    VK_2 = 0x32,
    VK_3 = 0x33,
    VK_4 = 0x34,
    VK_5 = 0x35,
    VK_6 = 0x36,
    VK_7 = 0x37,
    VK_8 = 0x38,
    VK_9 = 0x39,
    VK_A = 0x41,
    VK_B = 0x42,
    VK_C = 0x43,
    VK_D = 0x44,
    VK_E = 0x45,
    VK_F = 0x46,
    VK_G = 0x47,
    VK_H = 0x48,
    VK_I = 0x49,
    VK_J = 0x4A,
    VK_K = 0x4B,
    VK_L = 0x4C,
    VK_M = 0x4D,
    VK_N = 0x4E,
    VK_O = 0x4F,
    VK_P = 0x50,
    VK_Q = 0x51,
    VK_R = 0x52,
    VK_S = 0x53,
    VK_T = 0x54,
    VK_U = 0x55,
    VK_V = 0x56,
    VK_W = 0x57,
    VK_X = 0x58,
    VK_Y = 0x59,
    VK_Z = 0x5A,
    VK_NUMPAD0 = 0x60,
    VK_NUMPAD1 = 0x61,
    VK_NUMPAD2 = 0x62,
    VK_NUMPAD3 = 0x63,
    VK_NUMPAD4 = 0x64,
    VK_NUMPAD5 = 0x65,
    VK_NUMPAD6 = 0x66,
    VK_NUMPAD7 = 0x67,
    VK_NUMPAD8 = 0x68,
    VK_NUMPAD9 = 0x69,
    VK_MULTIPLY = 0x6A,
    VK_ADD = 0x6B,
    VK_SEPARATOR = 0x6C,
    VK_SUBTRACT = 0x6D,
    VK_DECIMAL = 0x6E,
    VK_DIVIDE = 0x6F,
    VK_ATTN = 0xF6,
    VK_CRSEL = 0xF7,
    VK_EXSEL = 0xF8,
    VK_EREOF = 0xF9,
    VK_PLAY = 0xFA,
    VK_ZOOM = 0xFB,
    VK_NONAME = 0xFC,
    VK_PA1 = 0xFD,
    VK_OEM_CLEAR = 0xFE,
    VK_LWIN = 0x5B,
    VK_RWIN = 0x5C,
    VK_APPS = 0x5D,
    VK_LSHIFT = 0xA0,
    VK_RSHIFT = 0xA1,
    VK_LCONTROL = 0xA2,
    VK_RCONTROL = 0xA3,
    VK_LMENU = 0xA4,
    VK_RMENU = 0xA5
  }
  #endregion

  #region PatBlt Types
  public enum PatBltTypes {
    SRCCOPY = 0x00CC0020,
    SRCPAINT = 0x00EE0086,
    SRCAND = 0x008800C6,
    SRCINVERT = 0x00660046,
    SRCERASE = 0x00440328,
    NOTSRCCOPY = 0x00330008,
    NOTSRCERASE = 0x001100A6,
    MERGECOPY = 0x00C000CA,
    MERGEPAINT = 0x00BB0226,
    PATCOPY = 0x00F00021,
    PATPAINT = 0x00FB0A09,
    PATINVERT = 0x005A0049,
    DSTINVERT = 0x00550009,
    BLACKNESS = 0x00000042,
    WHITENESS = 0x00FF0062
  }
  #endregion

  #region Clipboard Formats
  public enum ClipboardFormats : uint {
    CF_TEXT = 1,
    CF_BITMAP = 2,
    CF_METAFILEPICT = 3,
    CF_SYLK = 4,
    CF_DIF = 5,
    CF_TIFF = 6,
    CF_OEMTEXT = 7,
    CF_DIB = 8,
    CF_PALETTE = 9,
    CF_PENDATA = 10,
    CF_RIFF = 11,
    CF_WAVE = 12,
    CF_UNICODETEXT = 13,
    CF_ENHMETAFILE = 14,
    CF_HDROP = 15,
    CF_LOCALE = 16,
    CF_MAX = 17,
    CF_OWNERDISPLAY = 0x0080,
    CF_DSPTEXT = 0x0081,
    CF_DSPBITMAP = 0x0082,
    CF_DSPMETAFILEPICT = 0x0083,
    CF_DSPENHMETAFILE = 0x008E,
    CF_PRIVATEFIRST = 0x0200,
    CF_PRIVATELAST = 0x02FF,
    CF_GDIOBJFIRST = 0x0300,
    CF_GDIOBJLAST = 0x03FF
  }
  #endregion

  #region Common Controls Initialization flags
  public enum CommonControlInitFlags {
    ICC_LISTVIEW_CLASSES = 0x00000001,
    ICC_TREEVIEW_CLASSES = 0x00000002,
    ICC_BAR_CLASSES = 0x00000004,
    ICC_TAB_CLASSES = 0x00000008,
    ICC_UPDOWN_CLASS = 0x00000010,
    ICC_PROGRESS_CLASS = 0x00000020,
    ICC_HOTKEY_CLASS = 0x00000040,
    ICC_ANIMATE_CLASS = 0x00000080,
    ICC_WIN95_CLASSES = 0x000000FF,
    ICC_DATE_CLASSES = 0x00000100,
    ICC_USEREX_CLASSES = 0x00000200,
    ICC_COOL_CLASSES = 0x00000400,
    ICC_INTERNET_CLASSES = 0x00000800,
    ICC_PAGESCROLLER_CLASS = 0x00001000,
    ICC_NATIVEFNTCTL_CLASS = 0x00002000
  }
  #endregion

  #region Common Controls Styles
  public enum CommonControlStyles {
    CCS_TOP = 0x00000001,
    CCS_NOMOVEY = 0x00000002,
    CCS_BOTTOM = 0x00000003,
    CCS_NORESIZE = 0x00000004,
    CCS_NOPARENTALIGN = 0x00000008,
    CCS_ADJUSTABLE = 0x00000020,
    CCS_NODIVIDER = 0x00000040,
    CCS_VERT = 0x00000080,
    CCS_LEFT = (CCS_VERT | CCS_TOP),
    CCS_RIGHT = (CCS_VERT | CCS_BOTTOM),
    CCS_NOMOVEX = (CCS_VERT | CCS_NOMOVEY)
  }
  #endregion

  #region ToolBar Styles
  public enum ToolBarStyles {
    TBSTYLE_BUTTON = 0x0000,
    TBSTYLE_SEP = 0x0001,
    TBSTYLE_CHECK = 0x0002,
    TBSTYLE_GROUP = 0x0004,
    TBSTYLE_CHECKGROUP = (TBSTYLE_GROUP | TBSTYLE_CHECK),
    TBSTYLE_DROPDOWN = 0x0008,
    TBSTYLE_AUTOSIZE = 0x0010,
    TBSTYLE_NOPREFIX = 0x0020,
    TBSTYLE_TOOLTIPS = 0x0100,
    TBSTYLE_WRAPABLE = 0x0200,
    TBSTYLE_ALTDRAG = 0x0400,
    TBSTYLE_FLAT = 0x0800,
    TBSTYLE_LIST = 0x1000,
    TBSTYLE_CUSTOMERASE = 0x2000,
    TBSTYLE_REGISTERDROP = 0x4000,
    TBSTYLE_TRANSPARENT = 0x8000,
    TBSTYLE_EX_DRAWDDARROWS = 0x00000001
  }
  #endregion

  #region ToolBar Ex Styles
  public enum ToolBarExStyles {
    TBSTYLE_EX_DRAWDDARROWS = 0x1,
    TBSTYLE_EX_HIDECLIPPEDBUTTONS = 0x10,
    TBSTYLE_EX_DOUBLEBUFFER = 0x80
  }
  #endregion

  #region ToolBar Messages
  public enum ToolBarMessages {
    WM_USER = 0x0400,
    TB_ENABLEBUTTON = (WM_USER + 1),
    TB_CHECKBUTTON = (WM_USER + 2),
    TB_PRESSBUTTON = (WM_USER + 3),
    TB_HIDEBUTTON = (WM_USER + 4),
    TB_INDETERMINATE = (WM_USER + 5),
    TB_MARKBUTTON = (WM_USER + 6),
    TB_ISBUTTONENABLED = (WM_USER + 9),
    TB_ISBUTTONCHECKED = (WM_USER + 10),
    TB_ISBUTTONPRESSED = (WM_USER + 11),
    TB_ISBUTTONHIDDEN = (WM_USER + 12),
    TB_ISBUTTONINDETERMINATE = (WM_USER + 13),
    TB_ISBUTTONHIGHLIGHTED = (WM_USER + 14),
    TB_SETSTATE = (WM_USER + 17),
    TB_GETSTATE = (WM_USER + 18),
    TB_ADDBITMAP = (WM_USER + 19),
    TB_ADDBUTTONSA = (WM_USER + 20),
    TB_INSERTBUTTONA = (WM_USER + 21),
    TB_ADDBUTTONS = (WM_USER + 20),
    TB_INSERTBUTTON = (WM_USER + 21),
    TB_DELETEBUTTON = (WM_USER + 22),
    TB_GETBUTTON = (WM_USER + 23),
    TB_BUTTONCOUNT = (WM_USER + 24),
    TB_COMMANDTOINDEX = (WM_USER + 25),
    TB_SAVERESTOREA = (WM_USER + 26),
    TB_CUSTOMIZE = (WM_USER + 27),
    TB_ADDSTRINGA = (WM_USER + 28),
    TB_GETITEMRECT = (WM_USER + 29),
    TB_BUTTONSTRUCTSIZE = (WM_USER + 30),
    TB_SETBUTTONSIZE = (WM_USER + 31),
    TB_SETBITMAPSIZE = (WM_USER + 32),
    TB_AUTOSIZE = (WM_USER + 33),
    TB_GETTOOLTIPS = (WM_USER + 35),
    TB_SETTOOLTIPS = (WM_USER + 36),
    TB_SETPARENT = (WM_USER + 37),
    TB_SETROWS = (WM_USER + 39),
    TB_GETROWS = (WM_USER + 40),
    TB_GETBITMAPFLAGS = (WM_USER + 41),
    TB_SETCMDID = (WM_USER + 42),
    TB_CHANGEBITMAP = (WM_USER + 43),
    TB_GETBITMAP = (WM_USER + 44),
    TB_GETBUTTONTEXTA = (WM_USER + 45),
    TB_GETBUTTONTEXTW = (WM_USER + 75),
    TB_REPLACEBITMAP = (WM_USER + 46),
    TB_SETINDENT = (WM_USER + 47),
    TB_SETIMAGELIST = (WM_USER + 48),
    TB_GETIMAGELIST = (WM_USER + 49),
    TB_LOADIMAGES = (WM_USER + 50),
    TB_GETRECT = (WM_USER + 51),
    TB_SETHOTIMAGELIST = (WM_USER + 52),
    TB_GETHOTIMAGELIST = (WM_USER + 53),
    TB_SETDISABLEDIMAGELIST = (WM_USER + 54),
    TB_GETDISABLEDIMAGELIST = (WM_USER + 55),
    TB_SETSTYLE = (WM_USER + 56),
    TB_GETSTYLE = (WM_USER + 57),
    TB_GETBUTTONSIZE = (WM_USER + 58),
    TB_SETBUTTONWIDTH = (WM_USER + 59),
    TB_SETMAXTEXTROWS = (WM_USER + 60),
    TB_GETTEXTROWS = (WM_USER + 61),
    TB_GETOBJECT = (WM_USER + 62),
    TB_GETBUTTONINFOW = (WM_USER + 63),
    TB_SETBUTTONINFOW = (WM_USER + 64),
    TB_GETBUTTONINFOA = (WM_USER + 65),
    TB_SETBUTTONINFOA = (WM_USER + 66),
    TB_INSERTBUTTONW = (WM_USER + 67),
    TB_ADDBUTTONSW = (WM_USER + 68),
    TB_HITTEST = (WM_USER + 69),
    TB_SETDRAWTEXTFLAGS = (WM_USER + 70),
    TB_GETHOTITEM = (WM_USER + 71),
    TB_SETHOTITEM = (WM_USER + 72),
    TB_SETANCHORHIGHLIGHT = (WM_USER + 73),
    TB_GETANCHORHIGHLIGHT = (WM_USER + 74),
    TB_SAVERESTOREW = (WM_USER + 76),
    TB_ADDSTRINGW = (WM_USER + 77),
    TB_MAPACCELERATORA = (WM_USER + 78),
    TB_GETINSERTMARK = (WM_USER + 79),
    TB_SETINSERTMARK = (WM_USER + 80),
    TB_INSERTMARKHITTEST = (WM_USER + 81),
    TB_MOVEBUTTON = (WM_USER + 82),
    TB_GETMAXSIZE = (WM_USER + 83),
    TB_SETEXTENDEDSTYLE = (WM_USER + 84),
    TB_GETEXTENDEDSTYLE = (WM_USER + 85),
    TB_GETPADDING = (WM_USER + 86),
    TB_SETPADDING = (WM_USER + 87),
    TB_SETINSERTMARKCOLOR = (WM_USER + 88),
    TB_GETINSERTMARKCOLOR = (WM_USER + 89)
  }
  #endregion

  #region ToolBar Notifications
  public enum ToolBarNotifications {
    TTN_NEEDTEXTA = ((0 - 520) - 0),
    TTN_NEEDTEXTW = ((0 - 520) - 10),
    TBN_QUERYINSERT = ((0 - 700) - 6),
    TBN_DROPDOWN = ((0 - 700) - 10),
    TBN_HOTITEMCHANGE = ((0 - 700) - 13)
  }
  #endregion

  #region Reflected Messages
  public enum ReflectedMessages {
    OCM__BASE = (WinMsg.WM_USER + 0x1c00),
    OCM_COMMAND = (OCM__BASE + WinMsg.WM_COMMAND),
    OCM_CTLCOLORBTN = (OCM__BASE + WinMsg.WM_CTLCOLORBTN),
    OCM_CTLCOLOREDIT = (OCM__BASE + WinMsg.WM_CTLCOLOREDIT),
    OCM_CTLCOLORDLG = (OCM__BASE + WinMsg.WM_CTLCOLORDLG),
    OCM_CTLCOLORLISTBOX = (OCM__BASE + WinMsg.WM_CTLCOLORLISTBOX),
    OCM_CTLCOLORWinMsgBOX = (OCM__BASE + WinMsg.WM_CTLCOLORWinMsgBOX),
    OCM_CTLCOLORSCROLLBAR = (OCM__BASE + WinMsg.WM_CTLCOLORSCROLLBAR),
    OCM_CTLCOLORSTATIC = (OCM__BASE + WinMsg.WM_CTLCOLORSTATIC),
    OCM_CTLCOLOR = (OCM__BASE + WinMsg.WM_CTLCOLOR),
    OCM_DRAWITEM = (OCM__BASE + WinMsg.WM_DRAWITEM),
    OCM_MEASUREITEM = (OCM__BASE + WinMsg.WM_MEASUREITEM),
    OCM_DELETEITEM = (OCM__BASE + WinMsg.WM_DELETEITEM),
    OCM_VKEYTOITEM = (OCM__BASE + WinMsg.WM_VKEYTOITEM),
    OCM_CHARTOITEM = (OCM__BASE + WinMsg.WM_CHARTOITEM),
    OCM_COMPAREITEM = (OCM__BASE + WinMsg.WM_COMPAREITEM),
    OCM_HSCROLL = (OCM__BASE + WinMsg.WM_HSCROLL),
    OCM_VSCROLL = (OCM__BASE + WinMsg.WM_VSCROLL),
    OCM_PARENTNOTIFY = (OCM__BASE + WinMsg.WM_PARENTNOTIFY),
    OCM_NOTIFY = (OCM__BASE + WinMsg.WM_NOTIFY)
  }
  #endregion

  #region Notification Messages
  public enum NotificationMessages {
    NM_FIRST = (0 - 0),
    NM_CUSTOMDRAW = (NM_FIRST - 12),
    NM_NCHITTEST = (NM_FIRST - 14)
  }
  #endregion

  #region ToolTip Flags
  public enum ToolTipFlags {
    TTF_CENTERTIP = 0x0002,
    TTF_RTLREADING = 0x0004,
    TTF_SUBCLASS = 0x0010,
    TTF_TRACK = 0x0020,
    TTF_ABSOLUTE = 0x0080,
    TTF_TRANSPARENT = 0x0100,
    TTF_DI_SETITEM = 0x8000
  }
  #endregion

  #region Custom Draw Return Flags
  public enum CustomDrawReturnFlags {
    CDRF_DODEFAULT = 0x00000000,
    CDRF_NEWFONT = 0x00000002,
    CDRF_SKIPDEFAULT = 0x00000004,
    CDRF_NOTIFYPOSTPAINT = 0x00000010,
    CDRF_NOTIFYITEMDRAW = 0x00000020,
    CDRF_NOTIFYSUBITEMDRAW = 0x00000020,
    CDRF_NOTIFYPOSTERASE = 0x00000040
  }
  #endregion

  #region Custom Draw Item State Flags
  public enum CustomDrawItemStateFlags {
    CDIS_SELECTED = 0x0001,
    CDIS_GRAYED = 0x0002,
    CDIS_DISABLED = 0x0004,
    CDIS_CHECKED = 0x0008,
    CDIS_FOCUS = 0x0010,
    CDIS_DEFAULT = 0x0020,
    CDIS_HOT = 0x0040,
    CDIS_MARKED = 0x0080,
    CDIS_INDETERMINATE = 0x0100
  }
  #endregion

  #region Custom Draw Draw State Flags
  public enum CustomDrawDrawStateFlags {
    CDDS_PREPAINT = 0x00000001,
    CDDS_POSTPAINT = 0x00000002,
    CDDS_PREERASE = 0x00000003,
    CDDS_POSTERASE = 0x00000004,
    CDDS_ITEM = 0x00010000,
    CDDS_ITEMPREPAINT = (CDDS_ITEM | CDDS_PREPAINT),
    CDDS_ITEMPOSTPAINT = (CDDS_ITEM | CDDS_POSTPAINT),
    CDDS_ITEMPREERASE = (CDDS_ITEM | CDDS_PREERASE),
    CDDS_ITEMPOSTERASE = (CDDS_ITEM | CDDS_POSTERASE),
    CDDS_SUBITEM = 0x00020000
  }
  #endregion

  #region Toolbar button info flags
  public enum ToolBarButtonInfoFlags {
    TBIF_IMAGE = 0x00000001,
    TBIF_TEXT = 0x00000002,
    TBIF_STATE = 0x00000004,
    TBIF_STYLE = 0x00000008,
    TBIF_LPARAM = 0x00000010,
    TBIF_COMMAND = 0x00000020,
    TBIF_SIZE = 0x00000040,
    I_IMAGECALLBACK = -1,
    I_IMAGENONE = -2
  }
  #endregion

  #region Toolbar button styles
  public enum ToolBarButtonStyles {
    TBSTYLE_BUTTON = 0x0000,
    TBSTYLE_SEP = 0x0001,
    TBSTYLE_CHECK = 0x0002,
    TBSTYLE_GROUP = 0x0004,
    TBSTYLE_CHECKGROUP = (TBSTYLE_GROUP | TBSTYLE_CHECK),
    TBSTYLE_DROPDOWN = 0x0008,
    TBSTYLE_AUTOSIZE = 0x0010,
    TBSTYLE_NOPREFIX = 0x0020,
    TBSTYLE_TOOLTIPS = 0x0100,
    TBSTYLE_WRAPABLE = 0x0200,
    TBSTYLE_ALTDRAG = 0x0400,
    TBSTYLE_FLAT = 0x0800,
    TBSTYLE_LIST = 0x1000,
    TBSTYLE_CUSTOMERASE = 0x2000,
    TBSTYLE_REGISTERDROP = 0x4000,
    TBSTYLE_TRANSPARENT = 0x8000,
    TBSTYLE_EX_DRAWDDARROWS = 0x00000001
  }
  #endregion

  #region Toolbar button state
  public enum ToolBarButtonStates {
    TBSTATE_CHECKED = 0x01,
    TBSTATE_PRESSED = 0x02,
    TBSTATE_ENABLED = 0x04,
    TBSTATE_HIDDEN = 0x08,
    TBSTATE_INDETERMINATE = 0x10,
    TBSTATE_WRAP = 0x20,
    TBSTATE_ELLIPSES = 0x40,
    TBSTATE_MARKED = 0x80
  }
  #endregion

  #region Windows Hook Codes
  public enum WindowsHookCodes {
    WH_MSGFILTER = (-1),
    WH_JOURNALRECORD = 0,
    WH_JOURNALPLAYBACK = 1,
    WH_KEYBOARD = 2,
    WH_GETMESSAGE = 3,
    WH_CALLWNDPROC = 4,
    WH_CBT = 5,
    WH_SYSMSGFILTER = 6,
    WH_MOUSE = 7,
    WH_HARDWARE = 8,
    WH_DEBUG = 9,
    WH_SHELL = 10,
    WH_FOREGROUNDIDLE = 11,
    WH_CALLWNDPROCRET = 12,
    WH_KEYBOARD_LL = 13,
    WH_MOUSE_LL = 14
  }

  #endregion

  #region Mouse Hook Filters
  public enum MouseHookFilters {
    MSGF_DIALOGBOX = 0,
    MSGF_MESSAGEBOX = 1,
    MSGF_MENU = 2,
    MSGF_SCROLLBAR = 5,
    MSGF_NEXTWINDOW = 6
  }

  #endregion

  #region Draw Text format flags
  public enum DrawTextFormatFlags {
    DT_TOP = 0x00000000,
    DT_LEFT = 0x00000000,
    DT_CENTER = 0x00000001,
    DT_RIGHT = 0x00000002,
    DT_VCENTER = 0x00000004,
    DT_BOTTOM = 0x00000008,
    DT_WORDBREAK = 0x00000010,
    DT_SINGLELINE = 0x00000020,
    DT_EXPANDTABS = 0x00000040,
    DT_TABSTOP = 0x00000080,
    DT_NOCLIP = 0x00000100,
    DT_EXTERNALLEADING = 0x00000200,
    DT_CALCRECT = 0x00000400,
    DT_NOPREFIX = 0x00000800,
    DT_INTERNAL = 0x00001000,
    DT_EDITCONTROL = 0x00002000,
    DT_PATH_ELLIPSIS = 0x00004000,
    DT_END_ELLIPSIS = 0x00008000,
    DT_MODIFYSTRING = 0x00010000,
    DT_RTLREADING = 0x00020000,
    DT_WORD_ELLIPSIS = 0x00040000
  }

  #endregion

  #region Rebar Styles
  public enum RebarStyles {
    RBS_TOOLTIPS = 0x0100,
    RBS_VARHEIGHT = 0x0200,
    RBS_BANDBORDERS = 0x0400,
    RBS_FIXEDORDER = 0x0800,
    RBS_REGISTERDROP = 0x1000,
    RBS_AUTOSIZE = 0x2000,
    RBS_VERTICALGRIPPER = 0x4000,
    RBS_DBLCLKTOGGLE = 0x8000,
  }
  #endregion

  #region Rebar Notifications
  public enum RebarNotifications {
    RBN_FIRST = (0 - 831),
    RBN_HEIGHTCHANGE = (RBN_FIRST - 0),
    RBN_GETOBJECT = (RBN_FIRST - 1),
    RBN_LAYOUTCHANGED = (RBN_FIRST - 2),
    RBN_AUTOSIZE = (RBN_FIRST - 3),
    RBN_BEGINDRAG = (RBN_FIRST - 4),
    RBN_ENDDRAG = (RBN_FIRST - 5),
    RBN_DELETINGBAND = (RBN_FIRST - 6),
    RBN_DELETEDBAND = (RBN_FIRST - 7),
    RBN_CHILDSIZE = (RBN_FIRST - 8),
    RBN_CHEVRONPUSHED = (RBN_FIRST - 10)
  }
  #endregion

  #region Rebar Messages
  public enum RebarMessages {
    CCM_FIRST = 0x2000,
    WM_USER = 0x0400,
    RB_INSERTBANDA = (WM_USER + 1),
    RB_DELETEBAND = (WM_USER + 2),
    RB_GETBARINFO = (WM_USER + 3),
    RB_SETBARINFO = (WM_USER + 4),
    RB_GETBANDINFO = (WM_USER + 5),
    RB_SETBANDINFOA = (WM_USER + 6),
    RB_SETPARENT = (WM_USER + 7),
    RB_HITTEST = (WM_USER + 8),
    RB_GETRECT = (WM_USER + 9),
    RB_INSERTBANDW = (WM_USER + 10),
    RB_SETBANDINFOW = (WM_USER + 11),
    RB_GETBANDCOUNT = (WM_USER + 12),
    RB_GETROWCOUNT = (WM_USER + 13),
    RB_GETROWHEIGHT = (WM_USER + 14),
    RB_IDTOINDEX = (WM_USER + 16),
    RB_GETTOOLTIPS = (WM_USER + 17),
    RB_SETTOOLTIPS = (WM_USER + 18),
    RB_SETBKCOLOR = (WM_USER + 19),
    RB_GETBKCOLOR = (WM_USER + 20),
    RB_SETTEXTCOLOR = (WM_USER + 21),
    RB_GETTEXTCOLOR = (WM_USER + 22),
    RB_SIZETORECT = (WM_USER + 23),
    RB_SETCOLORSCHEME = (CCM_FIRST + 2),
    RB_GETCOLORSCHEME = (CCM_FIRST + 3),
    RB_BEGINDRAG = (WM_USER + 24),
    RB_ENDDRAG = (WM_USER + 25),
    RB_DRAGMOVE = (WM_USER + 26),
    RB_GETBARHEIGHT = (WM_USER + 27),
    RB_GETBANDINFOW = (WM_USER + 28),
    RB_GETBANDINFOA = (WM_USER + 29),
    RB_MINIMIZEBAND = (WM_USER + 30),
    RB_MAXIMIZEBAND = (WM_USER + 31),
    RB_GETDROPTARGET = (CCM_FIRST + 4),
    RB_GETBANDBORDERS = (WM_USER + 34),
    RB_SHOWBAND = (WM_USER + 35),
    RB_SETPALETTE = (WM_USER + 37),
    RB_GETPALETTE = (WM_USER + 38),
    RB_MOVEBAND = (WM_USER + 39),
    RB_SETUNICODEFORMAT = (CCM_FIRST + 5),
    RB_GETUNICODEFORMAT = (CCM_FIRST + 6)
  }
  #endregion

  #region Rebar Info Mask
  public enum RebarInfoMask {
    RBBIM_STYLE = 0x00000001,
    RBBIM_COLORS = 0x00000002,
    RBBIM_TEXT = 0x00000004,
    RBBIM_IMAGE = 0x00000008,
    RBBIM_CHILD = 0x00000010,
    RBBIM_CHILDSIZE = 0x00000020,
    RBBIM_SIZE = 0x00000040,
    RBBIM_BACKGROUND = 0x00000080,
    RBBIM_ID = 0x00000100,
    RBBIM_IDEALSIZE = 0x00000200,
    RBBIM_LPARAM = 0x00000400,
    BBIM_HEADERSIZE = 0x00000800
  }
  #endregion

  #region Rebar Styles
  public enum RebarStylesEx {
    RBBS_BREAK = 0x1,
    RBBS_CHILDEDGE = 0x4,
    RBBS_FIXEDBMP = 0x20,
    RBBS_GRIPPERALWAYS = 0x80,
    RBBS_USECHEVRON = 0x200
  }
  #endregion

  #region Object types
  public enum ObjectTypes {
    OBJ_PEN = 1,
    OBJ_BRUSH = 2,
    OBJ_DC = 3,
    OBJ_METADC = 4,
    OBJ_PAL = 5,
    OBJ_FONT = 6,
    OBJ_BITMAP = 7,
    OBJ_REGION = 8,
    OBJ_METAFILE = 9,
    OBJ_MEMDC = 10,
    OBJ_EXTPEN = 11,
    OBJ_ENHMETADC = 12,
    OBJ_ENHMETAFILE = 13
  }
  #endregion

  #region WM_MENUCHAR return values
  public enum MenuCharReturnValues {
    MNC_IGNORE = 0,
    MNC_CLOSE = 1,
    MNC_EXECUTE = 2,
    MNC_SELECT = 3
  }
  #endregion

  #region Background Mode
  public enum BackgroundMode {
    TRANSPARENT = 1,
    OPAQUE = 2
  }
  #endregion

  #region ListView Messages
  public enum ListViewMessages {
    LVM_FIRST = 0x1000,
    LVM_GETSUBITEMRECT = (LVM_FIRST + 56),
    LVM_GETITEMSTATE = (LVM_FIRST + 44),
    LVM_GETITEMTEXTW = (LVM_FIRST + 115)
  }
  #endregion

  #region Header Control Messages
  public enum HeaderControlMessages : int {
    HDM_FIRST = 0x1200,
    HDM_GETITEMRECT = (HDM_FIRST + 7),
    HDM_HITTEST = (HDM_FIRST + 6),
    HDM_SETIMAGELIST = (HDM_FIRST + 8),
    HDM_GETITEMW = (HDM_FIRST + 11),
    HDM_ORDERTOINDEX = (HDM_FIRST + 15)
  }
  #endregion

  #region Header Control Notifications
  public enum HeaderControlNotifications {
    HDN_FIRST = (0 - 300),
    HDN_BEGINTRACKW = (HDN_FIRST - 26),
    HDN_ENDTRACKW = (HDN_FIRST - 27),
    HDN_ITEMCLICKW = (HDN_FIRST - 22),
  }
  #endregion

  #region Header Control HitTest Flags
  public enum HeaderControlHitTestFlags : uint {
    HHT_NOWHERE = 0x0001,
    HHT_ONHEADER = 0x0002,
    HHT_ONDIVIDER = 0x0004,
    HHT_ONDIVOPEN = 0x0008,
    HHT_ABOVE = 0x0100,
    HHT_BELOW = 0x0200,
    HHT_TORIGHT = 0x0400,
    HHT_TOLEFT = 0x0800
  }
  #endregion

  #region List View sub item portion
  public enum SubItemPortion {
    LVIR_BOUNDS = 0,
    LVIR_ICON = 1,
    LVIR_LABEL = 2
  }
  #endregion

  #region Cursor Type
  public enum CursorType : uint {
    IDC_ARROW = 32512U,
    IDC_IBEAM = 32513U,
    IDC_WAIT = 32514U,
    IDC_CROSS = 32515U,
    IDC_UPARROW = 32516U,
    IDC_SIZE = 32640U,
    IDC_ICON = 32641U,
    IDC_SIZENWSE = 32642U,
    IDC_SIZENESW = 32643U,
    IDC_SIZEWE = 32644U,
    IDC_SIZENS = 32645U,
    IDC_SIZEALL = 32646U,
    IDC_NO = 32648U,
    IDC_HAND = 32649U,
    IDC_APPSTARTING = 32650U,
    IDC_HELP = 32651U
  }
  #endregion

  #region Tracker Event Flags
  public enum TrackerEventFlags : uint {
    TME_HOVER = 0x00000001,
    TME_LEAVE = 0x00000002,
    TME_QUERY = 0x40000000,
    TME_CANCEL = 0x80000000
  }
  #endregion

  #region Mouse Activate Flags
  public enum MouseActivateFlags {
    MA_ACTIVATE = 1,
    MA_ACTIVATEANDEAT = 2,
    MA_NOACTIVATE = 3,
    MA_NOACTIVATEANDEAT = 4
  }
  #endregion

  #region Dialog Codes
  public enum DialogCodes {
    DLGC_WANTARROWS = 0x0001,
    DLGC_WANTTAB = 0x0002,
    DLGC_WANTALLKEYS = 0x0004,
    DLGC_WANTMESSAGE = 0x0004,
    DLGC_HASSETSEL = 0x0008,
    DLGC_DEFPUSHBUTTON = 0x0010,
    DLGC_UNDEFPUSHBUTTON = 0x0020,
    DLGC_RADIOBUTTON = 0x0040,
    DLGC_WANTCHARS = 0x0080,
    DLGC_STATIC = 0x0100,
    DLGC_BUTTON = 0x2000
  }
  #endregion

  #region Update Layered Windows Flags
  public enum UpdateLayeredWindowsFlags {
    ULW_COLORKEY = 0x00000001,
    ULW_ALPHA = 0x00000002,
    ULW_OPAQUE = 0x00000004
  }
  #endregion

  #region Alpha Flags
  public enum AlphaFlags : byte {
    AC_SRC_OVER = 0x00,
    AC_SRC_ALPHA = 0x01
  }
  #endregion

  #region ComboBox messages
  public enum ComboBoxMessages {
    CB_GETDROPPEDSTATE = 0x0157
  }
  #endregion

  #region SetWindowLong indexes
  public enum SetWindowLongOffsets {
    GWL_WNDPROC = (-4),
    GWL_HINSTANCE = (-6),
    GWL_HWNDPARENT = (-8),
    GWL_STYLE = (-16),
    GWL_EXSTYLE = (-20),
    GWL_USERDATA = (-21),
    GWL_ID = (-12)
  }
  #endregion

  #region TreeView Messages
  public enum TreeViewMessages {
    TV_FIRST = 0x1100,
    TVM_GETITEMRECT = (TV_FIRST + 4),
    TVM_GETITEMW = (TV_FIRST + 62)
  }
  #endregion

  #region TreeViewItem Flags
  public enum TreeViewItemFlags {
    TVIF_TEXT = 0x0001,
    TVIF_IMAGE = 0x0002,
    TVIF_PARAM = 0x0004,
    TVIF_STATE = 0x0008,
    TVIF_HANDLE = 0x0010,
    TVIF_SELECTEDIMAGE = 0x0020,
    TVIF_CHILDREN = 0x0040,
    TVIF_INTEGRAL = 0x0080
  }
  #endregion

  #region ListViewItem flags
  public enum ListViewItemFlags {
    LVIF_TEXT = 0x0001,
    LVIF_IMAGE = 0x0002,
    LVIF_PARAM = 0x0004,
    LVIF_STATE = 0x0008,
    LVIF_INDENT = 0x0010,
    LVIF_NORECOMPUTE = 0x0800
  }
  #endregion

  #region HeaderItem flags
  public enum HeaderItemFlags {
    HDI_WIDTH = 0x0001,
    HDI_HEIGHT = HDI_WIDTH,
    HDI_TEXT = 0x0002,
    HDI_FORMAT = 0x0004,
    HDI_LPARAM = 0x0008,
    HDI_BITMAP = 0x0010,
    HDI_IMAGE = 0x0020,
    HDI_DI_SETITEM = 0x0040,
    HDI_ORDER = 0x0080
  }
  #endregion

  #region GetDCExFlags
  public enum GetDCExFlags {
    DCX_WINDOW = 0x00000001,
    DCX_CACHE = 0x00000002,
    DCX_NORESETATTRS = 0x00000004,
    DCX_CLIPCHILDREN = 0x00000008,
    DCX_CLIPSIBLINGS = 0x00000010,
    DCX_PARENTCLIP = 0x00000020,
    DCX_EXCLUDERGN = 0x00000040,
    DCX_INTERSECTRGN = 0x00000080,
    DCX_EXCLUDEUPDATE = 0x00000100,
    DCX_INTERSECTUPDATE = 0x00000200,
    DCX_LOCKWINDOWUPDATE = 0x00000400,
    DCX_VALIDATE = 0x00200000
  }
  #endregion

  #region HitTest 
  public enum HitTest {
    HTERROR = (-2),
    HTTRANSPARENT = (-1),
    HTNOWHERE = 0,
    HTCLIENT = 1,
    HTCAPTION = 2,
    HTSYSMENU = 3,
    HTGROWBOX = 4,
    HTSIZE = HTGROWBOX,
    HTMENU = 5,
    HTHSCROLL = 6,
    HTVSCROLL = 7,
    HTMINBUTTON = 8,
    HTMAXBUTTON = 9,
    HTLEFT = 10,
    HTRIGHT = 11,
    HTTOP = 12,
    HTTOPLEFT = 13,
    HTTOPRIGHT = 14,
    HTBOTTOM = 15,
    HTBOTTOMLEFT = 16,
    HTBOTTOMRIGHT = 17,
    HTBORDER = 18,
    HTREDUCE = HTMINBUTTON,
    HTZOOM = HTMAXBUTTON,
    HTSIZEFIRST = HTLEFT,
    HTSIZELAST = HTBOTTOMRIGHT,
    HTOBJECT = 19,
    HTCLOSE = 20,
    HTHELP = 21
  }
  #endregion

  #region ActivateFlags
  public enum ActivateState {
    WA_INACTIVE = 0,
    WA_ACTIVE = 1,
    WA_CLICKACTIVE = 2
  }
  #endregion

  #region StrechModeFlags
  public enum StrechModeFlags {
    BLACKONWHITE = 1,
    WHITEONBLACK = 2,
    COLORONCOLOR = 3,
    HALFTONE = 4,
    MAXSTRETCHBLTMODE = 4
  }
  #endregion

  #region ScrollBarFlags
  public enum ScrollBarFlags {
    SBS_HORZ = 0x0000,
    SBS_VERT = 0x0001,
    SBS_TOPALIGN = 0x0002,
    SBS_LEFTALIGN = 0x0002,
    SBS_BOTTOMALIGN = 0x0004,
    SBS_RIGHTALIGN = 0x0004,
    SBS_SIZEBOXTOPLEFTALIGN = 0x0002,
    SBS_SIZEBOXBOTTOMRIGHTALIGN = 0x0004,
    SBS_SIZEBOX = 0x0008,
    SBS_SIZEGRIP = 0x0010
  }
  #endregion

  #region System Metrics Codes
  public enum SystemMetricsCodes {
    SM_CXSCREEN = 0,
    SM_CYSCREEN = 1,
    SM_CXVSCROLL = 2,
    SM_CYHSCROLL = 3,
    SM_CYCAPTION = 4,
    SM_CXBORDER = 5,
    SM_CYBORDER = 6,
    SM_CXDLGFRAME = 7,
    SM_CYDLGFRAME = 8,
    SM_CYVTHUMB = 9,
    SM_CXHTHUMB = 10,
    SM_CXICON = 11,
    SM_CYICON = 12,
    SM_CXCURSOR = 13,
    SM_CYCURSOR = 14,
    SM_CYMENU = 15,
    SM_CXFULLSCREEN = 16,
    SM_CYFULLSCREEN = 17,
    SM_CYKANJIWINDOW = 18,
    SM_MOUSEPRESENT = 19,
    SM_CYVSCROLL = 20,
    SM_CXHSCROLL = 21,
    SM_DEBUG = 22,
    SM_SWAPBUTTON = 23,
    SM_RESERVED1 = 24,
    SM_RESERVED2 = 25,
    SM_RESERVED3 = 26,
    SM_RESERVED4 = 27,
    SM_CXMIN = 28,
    SM_CYMIN = 29,
    SM_CXSIZE = 30,
    SM_CYSIZE = 31,
    SM_CXFRAME = 32,
    SM_CYFRAME = 33,
    SM_CXMINTRACK = 34,
    SM_CYMINTRACK = 35,
    SM_CXDOUBLECLK = 36,
    SM_CYDOUBLECLK = 37,
    SM_CXICONSPACING = 38,
    SM_CYICONSPACING = 39,
    SM_MENUDROPALIGNMENT = 40,
    SM_PENWINDOWS = 41,
    SM_DBCSENABLED = 42,
    SM_CMOUSEBUTTONS = 43,
    SM_CXFIXEDFRAME = SM_CXDLGFRAME,
    SM_CYFIXEDFRAME = SM_CYDLGFRAME,
    SM_CXSIZEFRAME = SM_CXFRAME,
    SM_CYSIZEFRAME = SM_CYFRAME,
    SM_SECURE = 44,
    SM_CXEDGE = 45,
    SM_CYEDGE = 46,
    SM_CXMINSPACING = 47,
    SM_CYMINSPACING = 48,
    SM_CXSMICON = 49,
    SM_CYSMICON = 50,
    SM_CYSMCAPTION = 51,
    SM_CXSMSIZE = 52,
    SM_CYSMSIZE = 53,
    SM_CXMENUSIZE = 54,
    SM_CYMENUSIZE = 55,
    SM_ARRANGE = 56,
    SM_CXMINIMIZED = 57,
    SM_CYMINIMIZED = 58,
    SM_CXMAXTRACK = 59,
    SM_CYMAXTRACK = 60,
    SM_CXMAXIMIZED = 61,
    SM_CYMAXIMIZED = 62,
    SM_NETWORK = 63,
    SM_CLEANBOOT = 67,
    SM_CXDRAG = 68,
    SM_CYDRAG = 69,
    SM_SHOWSOUNDS = 70,
    SM_CXMENUCHECK = 71,
    SM_CYMENUCHECK = 72,
    SM_SLOWMACHINE = 73,
    SM_MIDEASTENABLED = 74,
    SM_MOUSEWHEELPRESENT = 75,
    SM_XVIRTUALSCREEN = 76,
    SM_YVIRTUALSCREEN = 77,
    SM_CXVIRTUALSCREEN = 78,
    SM_CYVIRTUALSCREEN = 79,
    SM_CMONITORS = 80,
    SM_SAMEDISPLAYFORMAT = 81,
    SM_CMETRICS = 83
  }
  #endregion

  #region ScrollBarTypes
  public enum ScrollBarTypes {
    SB_HORZ = 0,
    SB_VERT = 1,
    SB_CTL = 2,
    SB_BOTH = 3
  }
  #endregion

  #region SrollBarInfoFlags
  public enum ScrollBarInfoFlags {
    SIF_RANGE = 0x0001,
    SIF_PAGE = 0x0002,
    SIF_POS = 0x0004,
    SIF_DISABLENOSCROLL = 0x0008,
    SIF_TRACKPOS = 0x0010,
    SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  }
  #endregion

  #region Enable ScrollBar flags
  public enum EnableScrollBarFlags {
    ESB_ENABLE_BOTH = 0x0000,
    ESB_DISABLE_BOTH = 0x0003,
    ESB_DISABLE_LEFT = 0x0001,
    ESB_DISABLE_RIGHT = 0x0002,
    ESB_DISABLE_UP = 0x0001,
    ESB_DISABLE_DOWN = 0x0002,
    ESB_DISABLE_LTUP = ESB_DISABLE_LEFT,
    ESB_DISABLE_RTDN = ESB_DISABLE_RIGHT
  }
  #endregion

  #region Scroll Requests
  public enum ScrollBarRequests {
    SB_LINEUP = 0,
    SB_LINELEFT = 0,
    SB_LINEDOWN = 1,
    SB_LINERIGHT = 1,
    SB_PAGEUP = 2,
    SB_PAGELEFT = 2,
    SB_PAGEDOWN = 3,
    SB_PAGERIGHT = 3,
    SB_THUMBPOSITION = 4,
    SB_THUMBTRACK = 5,
    SB_TOP = 6,
    SB_LEFT = 6,
    SB_BOTTOM = 7,
    SB_RIGHT = 7,
    SB_ENDSCROLL = 8
  }
  #endregion

  #region SrollWindowEx flags
  public enum ScrollWindowExFlags {
    SW_SCROLLCHILDREN = 0x0001,
    SW_INVALIDATE = 0x0002,
    SW_ERASE = 0x0004,
    SW_SMOOTHSCROLL = 0x0010
  }
  #endregion

  #region ImageListFlags
  public enum ImageListFlags {
    ILC_MASK = 0x0001,
    ILC_COLOR = 0x0000,
    ILC_COLORDDB = 0x00FE,
    ILC_COLOR4 = 0x0004,
    ILC_COLOR8 = 0x0008,
    ILC_COLOR16 = 0x0010,
    ILC_COLOR24 = 0x0018,
    ILC_COLOR32 = 0x0020,
    ILC_PALETTE = 0x0800
  }
  #endregion

  #region List View Notifications
  public enum ListViewNotifications {
    LVN_FIRST = (0 - 100),
    LVN_GETDISPINFOW = (LVN_FIRST - 77),
    LVN_SETDISPINFOA = (LVN_FIRST - 51)
  }
  #endregion


}
